package com.food.chronicles.user.entity;

import com.baomidou.mybatisplus.annotation.*;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.experimental.Accessors;

import java.io.Serializable;
import java.util.Date;

/**
 * <p>
 * 食谱表
 * </p>
 *
 * @author 牧之
 * @since 2025-05-31
 */
@Data
@EqualsAndHashCode(callSuper = false)
@Accessors(chain = true)
@TableName("recipe")
public class Recipe implements Serializable {

    private static final long serialVersionUID = 1L;

    /**
     * 食谱ID（主键，自增）
     */
    @TableId(value = "id", type = IdType.AUTO)
    private Long id;

    /**
     * 发布用户ID（外键，关联user表id）
     */
    @TableField("creator_id")
    private Long creatorId;

    /**
     * 食谱名称
     */
    @TableField("title")
    private String title;

    /**
     * 分类（1中餐/2西餐/3甜点）
     */
    @TableField("category")
    private Integer category;

    /**
     * 封面图URL
     */
    @TableField("cover_image")
    private String coverImage;

    /**
     * 食谱简介
     */
    @TableField("description")
    private String description;

    /**
     * 食材列表json
     */
    @TableField("ingredients")
    private String ingredients;

    /**
     * 做法步骤json
     */
    @TableField("steps")
    private String steps;

    /**
     * 难度等级（1=简单，2=中等，3=困难）
     */
    @TableField("difficulty")
    private Integer difficulty;

    /**
     * 准备时间（分钟）
     */
    @TableField("prep_time")
    private Integer prepTime;

    /**
     * 烹饪时间（分钟）
     */
    @TableField("cook_time")
    private Integer cookTime;

    /**
     * 总耗时（分钟）
     */
    @TableField("total_time")
    private Integer totalTime;

    /**
     * 适用人数
     */
    @TableField("serves")
    private Integer serves;

    /**
     * 点赞数
     */
    @TableField("like_count")
    private Integer likeCount;

    /**
     * 收藏数
     */
    @TableField("collect_count")
    private Integer collectCount;

    /**
     * 评论数
     */
    @TableField("comment_count")
    private Integer commentCount;

    /**
     * 是否精选（1=是，0=否）
     */
    @TableField("is_featured")
    private Integer isFeatured;

    /**
     * 发布时间
     */
    @TableField(value = "create_time", fill = FieldFill.INSERT)
    private Date createTime;

    /**
     * 更新时间
     */
    @TableField(value = "update_time", fill = FieldFill.INSERT_UPDATE)
    private Date updateTime;


}
